package com.yanzhang.dao.user;

import com.yanzhang.pojo.User;

import java.sql.Connection;
import java.sql.SQLException;
import java.util.List;

/**
 * @author yanzhang
 */
public interface UserDao {

    /**
     * 新增一个用户
     * @param connection 数据库连接
     * @param user 用户对象
     * @return 结果数量
     * @throws Exception 抛出SQL异常
     */
    int add(Connection connection, User user)throws Exception;

    /**
     * 通过用户名查询用户
     * @param connection 数据库连接
     * @param userCode 用户名
     * @return 用户对象
     * @throws SQLException 抛出SQL异常
     */
    User getUserByCode(Connection connection, String userCode) throws Exception;

    /**
     * 分页查询用户集合
     * @param connection 数据库连接
     * @param userName 用户名字
     * @param userRole 角色id
     * @param currentPageNo 当前页码
     * @param pageSize 每页数量
     * @return 用户对象集合
     * @throws Exception 抛出SQL异常
     */
    List<User> getUserList(Connection connection, String userName, int userRole, int currentPageNo, int pageSize) throws Exception;

    /**
     * 查询用户总数量
     * @param connection 数据库连接
     * @param userName 用户名字
     * @param userRole 角色id
     * @return 结果数量
     * @throws Exception 抛出SQL异常
     */
    int getUserCount(Connection connection, String userName, int userRole) throws Exception;

    /**
     * 通过id获取用户
     * @param connection 数据库连接
     * @param id 主键
     * @return 用户对象
     * @throws Exception 抛出SQL异常
     */
    User getUserById(Connection connection, int id) throws Exception;

    /**
     * 修改用户
     * @param connection 数据库连接
     * @param user 用户对象
     * @return 结果数量
     * @throws Exception 抛出SQL异常
     */
    int modifyUser(Connection connection, User user) throws Exception;

    /**
     * 修改用户密码
     * @param connection 数据库连接
     * @param id 主键
     * @param password 用户新密码
     * @return 结果数量
     * @throws Exception 抛出SQL异常
     */
    int updatePassword(Connection connection, int id, String password) throws Exception;

    /**
     * 通过id删除一个用户
     * @param connection 数据库连接
     * @param id 主键
     * @return 结果数量
     * @throws Exception 抛出SQL异常
     */
    int deleteUserById(Connection connection, int id) throws Exception;
}
